const express = require('express');
const router = express.Router();
const Category = require('../models/Category');

// GET: 获取所有目录
// GET: 获取所有目录 (支持分页)
router.get('/', async (req, res) => {
  try {
    // 从查询参数中获取页码和每页数量，并提供默认值
    const page = parseInt(req.query.page) || 1;
    const pageSize = parseInt(req.query.pageSize) || 10;

    // 计算需要跳过的文档数量
    const skip = (page - 1) * pageSize;

    // 使用 .countDocuments() 获取集合中的总文档数
    const total = await Category.countDocuments();

    // 使用 .skip() 和 .limit() 进行分页查询
    const categories = await Category.find()
      .sort({ sortOrder: 1, createdAt: -1 }) // 增加一个创建时间倒序，保证排序稳定
      .skip(skip)
      .limit(pageSize);

    // 以标准格式返回数据，包含列表和总条数
    res.json({
      data: categories,
      total: total,
    });
  } catch (error) {
    res.status(500).json({ message: '服务器错误' });
  }
});

// GET: 获取单个目录
router.get('/:id', async (req, res) => {
  const category = await Category.findById(req.params.id);
  res.json(category);
});

// POST: 创建新目录
router.post('/', async (req, res) => {
  const newCategory = new Category(req.body);
  await newCategory.save();
  res.json(newCategory);
});

// PUT: 更新目录
router.put('/:id', async (req, res) => {
  const updatedCategory = await Category.findByIdAndUpdate(req.params.id, req.body, { new: true });
  res.json(updatedCategory);
});

// DELETE: 删除目录
router.delete('/:id', async (req, res) => {
  await Category.findByIdAndDelete(req.params.id);
  res.json({ message: '删除成功' });
});

module.exports = router;